B30 - Combination 2
提出
code: python
# H + W - 2
# 1,2 ... H + W - 2 通り
解説
code: python
# a の b 乗を mod で割った余りを返す関数
def power(a, b, mod):
ans = 1
for i in range(30):
# b の i 番目のビットが 1
if (b >> i) & 1:
# a の 2^i 乗 を掛ける
ans = (ans * a) % mod
# a の 2^i 乗 を準備
a = (a * a) % mod
return ans
h, w = map(int, input().split())
mod = 1000000007
# h+w-2 回の移動で w-1 横移動の選び方
# 分子を求める
a = 1
for i in range(1, (h + w - 2) + 1):
a = (a * i) % mod
# 分母を求める
b = 1
for i in range(1, (w-1) + 1):
b = (b * i) % mod
for i in range(1, (h + w - 2) - (w-1) + 1):
b = (b * i) % mod
# a÷b を mod で割った余り
print((a * power(b, mod - 2, mod)) % mod)